AWS CLIで特定のEC2インスタンスタイプをサポートしているリージョンを確認するスクリプトを作成してみた
prismatixのとばち(@toda_kk)です。
利用中のリージョンやAZが特定のEC2インスタンスタイプをサポートしているかどうかを調べる際に、AWSマネジメントコンソールからEC2「インスタンスタイプ」のページを表示することで確認できます。
ただ、特定のリージョンがサポートしているEC2インスタンスタイプではなく、特定のEC2インスタンスタイプをサポートしているリージョンの一覧を調べたいときがあります。
そこで、下記ページを参考にしながら、AWS CLIを利用したBashスクリプトを作成してみました。
注意点
このスクリプトでは、実行するAWSアカウントで有効になっているリージョンのみを確認の対象とします。
明示的に有効化が必要なリージョンについては、有効化していない場合にはスクリプトの実行結果に表示されません。
インスタンスタイプをサポートしているリージョンの一覧を表示するスクリプト
特定のEC2インスタンスタイプをサポートしているリージョンの一覧を表示するBashスクリプトを作成してみました。
#!/bin/bash regions=$(aws ec2 describe-regions --query 'Regions[].[RegionName]' --output text | sort) instance_type=$1 for region in ${regions[@]}; do result=$(aws ec2 describe-instance-type-offerings --region ${region} --filters Name=instance-type,Values=$1 --query 'InstanceTypeOfferings[0].Location' --output text) if [[ $result = 'None' ]] ; then continue fi echo $result done
引数にインスタンスタイプを指定します。ここではr6i.large
を指定して実行してみます。2022年8月4日現在、下記の結果が表示されました。
./list-instance-type-support-regions.sh r6i.large ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-north-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-east-2 us-west-1 us-west-2
表示のないリージョン、例えばap-northeast-3(大阪リージョン)やap-southeast-3(ジャカルタリージョン)は、R6iをサポートしていないことが確認できます。
インスタンスタイプをサポートしているAvailability Zoneの一覧を表示するスクリプト
インスタンスタイプによっては、リージョンではサポートしているものの特定のAvailability Zoneではサポートされていない場合があります。
例えば、EC2 Auto Scalingグループを3AZ構成で作成している場合、特定のインスタンスタイプを2つのAZではサポートしているが残りの1つではサポートしておらずEC2インスタンスの起動に失敗する、ということが発生する可能性があります。
このような状況を事前に確認する上で、リージョンだけでなくサポートしているAZの一覧を表示するBashスクリプトも作成してみました。
#!/bin/bash regions=$(aws ec2 describe-regions --query 'Regions[].[RegionName]' --output text | sort) instance_type=$1 echo "region: availability-zones" for region in ${regions[@]}; do result=$(aws ec2 describe-instance-type-offerings --location-type availability-zone-id --region $region --filters Name=instance-type,Values=$1 --query 'sort(InstanceTypeOfferings[*].Location)' --output text | sed s/\\t/\,/g) if [[ $result = '' ]] ; then continue fi echo "$region: $result" done
先ほどと同じように、引数にインスタンスタイプを指定します。同じく、r6i.large
を指定して実行してみます。2022年8月4日現在、下記の結果が表示されました。
./list-instance-type-support-availability-zones.sh r6i.large region: availability-zones ap-northeast-1: apne1-az2,apne1-az4 ap-northeast-2: apne2-az1,apne2-az2,apne2-az3,apne2-az4 ap-south-1: aps1-az1,aps1-az2,aps1-az3 ap-southeast-1: apse1-az1,apse1-az2,apse1-az3 ap-southeast-2: apse2-az1,apse2-az2,apse2-az3 ca-central-1: cac1-az1,cac1-az2,cac1-az4 eu-central-1: euc1-az1,euc1-az2,euc1-az3 eu-north-1: eun1-az1,eun1-az2,eun1-az3 eu-west-1: euw1-az1,euw1-az2,euw1-az3 eu-west-2: euw2-az1,euw2-az2,euw2-az3 eu-west-3: euw3-az1,euw3-az2,euw3-az3 sa-east-1: sae1-az1,sae1-az2,sae1-az3 us-east-1: use1-az1,use1-az2,use1-az4,use1-az5,use1-az6 us-east-2: use2-az1,use2-az2,use2-az3 us-west-1: usw1-az1,usw1-az3 us-west-2: usw2-az1,usw2-az2,usw2-az3,usw2-az4
R6iインスタンスタイプについて、ap-northeast-1(東京リージョン)ではサポートされているものの、AZのうちapne1-az1
ではサポートされていないことがわかります。
用途に合わせてスクリプトをご活用いただけると嬉しいです。
以上、prismatixのとばち(@toda_kk)でした。